package cn.jtfadmin.sysmonitor.domain.dto;

import lombok.Data;

import java.io.Serializable;

/**
 * CPU 信息
 * @author jtf
 * @since 0.0.2
 */
@Data
public class ProcessorInfoDTO implements Serializable {

    /**
     * cpu 名字
     */
    protected String name;

    /**
     * 物理封装个数
     */
    protected int physicalPackageCount;

    /**
     * 物理个数
     */
    protected int physicalProcessorCount;

    /**
     * 逻辑个数
     */
    protected int logicalProcessorCount;

    /**
     * cpu 标识符 例如x86系列6型号15和10。
     * 对于非Intel/AMD处理器，此字符串填充有可比较的值
     */
    protected String identifier;

    /**
     * cpuId,这是表示8字节的十六进制字符串值，
     * 通常使用EAX寄存器设置为的CPUID操作码获取
     * 1. 前四个字节是EAX寄存器的结果内容，它是处理器签名，以人类可读的形式表示为{@link #identifier}。剩下的四个字节是EDX寄存器，包含功能标志。
     * 对于不支持CPUID操作码的处理器，将填充此字段用一个类似的十六进制字符串。
     * 例如，ARM处理器将填充第一个MIDR为32字节。aixpowerpc处理器将返回机器ID。
     * 注意：返回字节的顺序取决于平台和软件
     * 返回值可以是大端或小端顺序。
     * 注意：如果OSHI无法从本机源确定ProcessorID，则将尝试从处理器中的可用信息重建一个标识符。
     */
    protected String id;

    /**
     * 未处理架构
     */
    protected String microArchictecture;

    public ProcessorInfoDTO() {
    }

    public ProcessorInfoDTO(String name, int physicalPackageCount, int physicalProcessorCount, int logicalProcessorCount, String identifier, String id, String microArchictecture) {
        this.name = name;
        this.physicalPackageCount = physicalPackageCount;
        this.physicalProcessorCount = physicalProcessorCount;
        this.logicalProcessorCount = logicalProcessorCount;
        this.identifier = identifier;
        this.id = id;
        this.microArchictecture = microArchictecture;
    }
}
